92df52f17a98f8ee1e0f52926c4895f69c14ac0b,src/edu/stanford/nlp/util/MetaClass.java,MetaClass,cast,#String#Type#,549
Before Change
params = pt.getActualTypeArguments();
clazz = (Class <?>) pt.getRawType();
}else{
clazz = type2class(type);
throw new IllegalArgumentException("Cannot cast to type (unhandled type): " + type);
}
//--Cast
if(String.class.isAssignableFrom(clazz)){
// (case: String)
return (E) value;
}else if(Boolean.class.isAssignableFrom(clazz) || boolean.class.isAssignableFrom(clazz)){
//(case: boolean)
if("1".equals(value)){ return (E) new Boolean(true); }
return (E) new Boolean( Boolean.parseBoolean(value) );
}else if(Integer.class.isAssignableFrom(clazz) || int.class.isAssignableFrom(clazz)){
//(case: integer)
try {
After Change
}else if(Boolean.class.isAssignableFrom(clazz) || boolean.class.isAssignableFrom(clazz)){
//(case: boolean)
if("1".equals(value)){ return (E) Boolean.TRUE; }
return (E) Boolean.valueOf(Boolean.parseBoolean(value));
}else if(Integer.class.isAssignableFrom(clazz) || int.class.isAssignableFrom(clazz)){
//(case: integer)
try {
return (E) new Integer(Integer.parseInt(value));
} catch (NumberFormatException e) {
return (E) new Integer((int) Double.parseDouble(value));
}
}else if(Long.class.isAssignableFrom(clazz) || long.class.isAssignableFrom(clazz)){
//(case: long)
try {
return (E) new Long(Long.parseLong(value));
} catch (NumberFormatException e) {
return (E) new Long((long) Double.parseDouble(value));
}
}else if(Float.class.isAssignableFrom(clazz) || float.class.isAssignableFrom(clazz)){
//(case: float)
if(value == null){ return (E) new Float(Float.NaN); }
return (E) new Float(Float.parseFloat(value));
}else if(Double.class.isAssignableFrom(clazz) || double.class.isAssignableFrom(clazz)){
//(case: double)
if(value == null){ return (E) new Double(Double.NaN); }
return (E) new Double(Double.parseDouble(value));
}else if(Short.class.isAssignableFrom(clazz) || short.class.isAssignableFrom(clazz)){
//(case: short)
try {
return (E) new Short(Short.parseShort(value));
} catch (NumberFormatException e) {
return (E) new Short((short) Double.parseDouble(value));
}
}else if(Byte.class.isAssignableFrom(clazz) || byte.class.isAssignableFrom(clazz)){
//(case: byte)
try {
return (E) new Byte(Byte.parseByte(value));
} catch (NumberFormatException e) {
return (E) new Byte((byte) Double.parseDouble(value));
}
}else if(Character.class.isAssignableFrom(clazz) || char.class.isAssignableFrom(clazz)){
//(case: char)
return (E) new Character((char) Integer.parseInt(value));
}else if(java.util.Date.class.isAssignableFrom(clazz)){
//(case: date)
try {
return (E) new Date(Long.parseLong(value));
} catch (NumberFormatException e) {
return null;
}
} else if(java.util.Calendar.class.isAssignableFrom(clazz)){
//(case: date)
try {
Date d = new Date(Long.parseLong(value));
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(d);
return (E) cal;
} catch (NumberFormatException e) {
return null;
}
} else if(File.class.isAssignableFrom(clazz)){
return (E) new File(value);
} else if(Class.class.isAssignableFrom(clazz)){
try {
return (E) Class.forName(value);
} catch (ClassNotFoundException e) {
return null;
}
} else if(clazz.isArray()){
if(value == null){ return null; }
Class <?> subType = clazz.getComponentType();
// (case: array)
String[] strings = decodeArray(value);
Object[] array = (Object[]) Array.newInstance(clazz.getComponentType(), strings.length);
for(int i=0; i<strings.length; i++){
array[i] = cast(strings[i], subType);
}
return (E) array;
} else if (Map.class.isAssignableFrom(clazz)) {
return (E) decodeMap(value);
} else if(clazz.isEnum()){
// (case: enumeration)
Class c = (Class) clazz;